-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support VO bit #76
Support VO bit #76
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM (except for the minor question below)
inline void* mmtk_immix_alloc_fast(MMTkMutatorContext* mutator, size_t size, size_t align, size_t offset) { | ||
ImmixAllocator* allocator = &mutator->allocators.immix[MMTK_DEFAULT_IMMIX_ALLOCATOR]; | ||
return bump_alloc_fast(mutator, (uintptr_t*)&allocator->cursor, (intptr_t)allocator->limit, size, align, offset, 0); | ||
} | ||
|
||
inline void mmtk_immix_post_alloc_slow(MMTkMutatorContext* mutator, void* obj, size_t size) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn't be useful to keep this for debugging purposes? That was the only reason I left it there --- I think you had something like that for the write barriers too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. It would be useful in some cases. It allows us to do post alloc in Rust, and it is independent from alloc (e.g. inlined alloc with a post alloc call). However, I am not sure if this is really useful. Without it, we can still disable in lined alloc, and do alloc call which includes post alloc.
Besides, if we would like to do this 'post_alloc_slow' call, we will need to make it visible to the codegen. Julia does not differentiate alloc and post alloc in its own GC (post alloc is just a part of the alloc call). In the GC interface, there is no separate post alloc and we do post alloc in those alloc functions as well. So while we can use the term post alloc in MMTk code, I feel it a bit confusing to introduce the term 'post alloc' to Julia.
So it seems it is unclear whether it would be useful to allow post alloc calls for debugging, and it would be confusing to the code base to have it implemented. I think it might be a good idea to just remove it.
This PR ports #158 to `dev`, and updates Julia to mmtk/julia#76.
This PR ports #59 to
dev
. In addition, this PR 1. introducesjl_gc_permsymbol
for allocating the special perm object inmk_symbol
, 2. removes some seemingly unnecessary post alloc calls forjl_gc_perm_alloc
indatatype.c
, and 3. does not support set VO bit using the slowpath (MMTk call).